// 封装axios用于发请求
import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Message } from 'element-ui'
const request = axios.create({
  baseURL: 'http://interview-api-t.itheima.net/',
  timeout: 5000
})

// 请求拦截器 (注意: 函数都有返回值)
request.interceptors.request.use(function (config) {
  // 发送请求前做点事
  // 从vuex中拿到token拼接在headers.Authorization上
  const { token } = store.state.user
  if (token) {
    // 注意Bearer后有空格
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, function (error) {
  // 对错误做处理
  return Promise.reject(error)
})

// 响应拦截器 (注意: 函数都有返回值)
request.interceptors.response.use(function (response) {
  // console.log(response)
  return response.data
},
function (error) {
  // 响应失败做点事
  console.dir(error)
  // 外面包一层error.response判断可以防止error.response为空时内部代码报错
  if (error.response) {
    if (error.response.status === 401) {
      // 清空token  跳转到登录页 给个提示
      Message.error('过期了啊,得重登录啊,别在那瞎刷新!')
      store.commit('user/logout')
      // 跳转到登录
      router.push('/login')
    } else {
      // 给个提示
      Message.error(error.response.data.message)
    }
  }
  return Promise.reject(error)
})

export default request
